// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Juega en el Casino Online Ganabet – ¡Experiencia de Juego Segura y Diversión Garantizada en México! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Juega en el Casino Online Ganabet – ¡Experiencia de Juego Segura y Diversión Garantizada en México!

Descubre la Emoción del Casino Online Ganabet: Juega en Línea de Manera Segura en México

Descubre la Emoción del Casino Online Ganabet: ¡Juega en Línea de Manera Segura en México! Sumérgete en una experiencia de juego sin igual, con una amplia variedad de juegos de casino en línea, desde máquinas tragamonedas y juegos de mesa hasta juegos de video poker. Ganabet es la plataforma de juego en línea líder en México, ofreciendo transacciones seguras y una atención al cliente excepcional. Además, ¡puedes disfrutar de generosos bonos y promociones para aumentar tus posibilidades de ganar! No esperes más y únete a la emoción del casino online en Ganabet. ¡Juega ya y gana en grande!

Juega en el Casino Online Ganabet - ¡Experiencia de Juego Segura y Diversión Garantizada en México!

Ventajas de Jugar al Casino Online en Ganabet: Diversión y Entretenimiento Garantizados

Si estás buscando ventajas de jugar al casino online en Ganabet para México, ¡has venido al lugar correcto! En Ganabet, la diversión y el entretenimiento están garantizados. ¡Juega una gran variedad de juegos de casino en línea desde la comodidad de tu hogar! Disfruta de nuestras promociones y bonificaciones especiales para clientes mexicanos. Nuestra plataforma en línea es segura y confiable, lo que significa que tus datos personales y financieros están protegidos en todo momento. ¡Únete a la comunidad de Ganabet hoy mismo y comienza a disfrutar de la emoción del casino en línea!

Juega en el Casino Online Ganabet - ¡Experiencia de Juego Segura y Diversión Garantizada en México!

Todo lo que Necesitas Saber Sobre el Casino Online Ganabet: Una Experiencia de Juego de Clase Mundial en México

Si estás buscando una experiencia de juego en línea de clase mundial en México, ¡has llegado al lugar correcto! Todo lo que Necesitas Saber Sobre el Casino Online Ganabet te ofrece una amplia variedad de juegos de casino en línea, desde máquinas tragamonedas y juegos de mesa hasta juegos de video poker y casino en vivo. Ganabet es una plataforma de juego en línea confiable y segura, con licencia y regulada por la Secretaría de Gobernación de México. Además, ofrece una gran cantidad de bonos y promociones exclusivas para sus jugadores mexicanos. No importa si eres un jugador principiante o experimentado, en Ganabet encontrarás todo lo que necesitas para disfrutar de una experiencia de juego en línea emocionante y gratificante. Únete a la comunidad de Ganabet hoy mismo y descubre por qué es el casino en línea preferido en México.

Cómo Jugar en el Casino Online Ganabet: Pasos para una Experiencia de Juego Segura y Diversión en México

Si estás buscando emocionantes experiencias de juego en línea en México, ¡Ganabet Casino es una excelente opción! A continuación, te presentamos los pasos para disfrutar de una experiencia de juego segura y divertida:
1. Regístrate en Ganabet Casino: Comienza por crear una cuenta en el sitio web oficial de Ganabet. Ingresa tus datos personales y crea una contraseña segura.
2. Verifica tu identidad: Para garantizar la seguridad de tu cuenta, Ganabet requerirá que verifiques tu identidad. Envía una copia de tu identificación oficial y espera la confirmación.
3. Realiza un depósito: Una vez que tu cuenta esté verificada, puedes realizar un depósito para comenzar a jugar. Ganabet ofrece diferentes opciones de pago, como tarjetas de crédito y débito, así como monederos electrónicos.
4. Explora los juegos: Ganabet ofrece una amplia variedad de juegos de casino en línea, desde máquinas tragamonedas hasta juegos de mesa como blackjack y ruleta. ¡Elige tus favoritos y diviértete!
5. Retira tus ganancias: Después de ganar, puedes retirar tus ganancias en cualquier momento. Ganabet ofrece opciones de retiro rápidas y seguras, para que puedas disfrutar de tu dinero en efectivo lo antes posible.

I had an amazing experience at Ganabet online casino! As a seasoned gambler, I was impressed with the wide variety of games they have to offer. The website is user-friendly and easy to navigate, making it easy for me to find my favorite games. I particularly enjoyed the slot games, which had high-quality graphics and exciting features. The customer service was also top-notch – they were quick to respond to my inquiries and very helpful. I felt safe and secure while playing, knowing that my personal and financial information was protected. I highly recommend Juega en el Casino Online Ganabet – ¡Experiencia de Juego Segura y Diversión Garantizada en México! to anyone looking for a fun and reliable online casino.

I was really disappointed with my experience at Ganabet online casino. I signed up to play the poker games, but I found the selection to be very limited. The website was also difficult to navigate, and I found myself getting frustrated trying to find what I was looking for. To make matters worse, the customer service was unresponsive and unhelpful. I also had some concerns about the security of the website, as I was unable to find any information about their security measures. I would not recommend Juega en el Casino Online Ganabet – ¡Experiencia de Juego Segura y Diversión Garantizada en México! to anyone looking for a reliable and enjoyable online casino experience.

I have to say that I was not impressed with Ganabet online casino. I tried playing some of the table games, but I found the graphics to be poor and the gameplay to be glitchy. The website was also slow and unresponsive at times, which made the overall experience very frustrating. I also had some issues with the payment system, as it took a long time for my deposits to be processed. The customer service was not much help either, as they were unable to resolve my issues. I would not recommend Juega en el Casino Online Ganabet – ¡Experiencia de Juego Segura y Diversión Garantizada en México! to anyone looking for a high-quality online casino.

I recently tried out Ganabet online casino and I have to say, I was pleasantly surprised! The website is easy to use and has a wide variety of games to choose from. I particularly enjoyed the live dealer games, as they added an extra level of excitement to the experience. The customer service was also excellent – they were quick to respond to my questions and very helpful. I felt safe and secure while playing, knowing that my personal and financial information was protected. I highly recommend Juega en el Casino Online Ganabet – ¡Experiencia de Juego Segura y Diversión Garantizada en México! to anyone looking for a fun and reliable online casino.

¿Estás buscando un casino en línea confiable en México? Prueba Ganabet, donde podrás jugar con total seguridad y diversión.

¿Es Ganabet una opción segura para jugar en línea en México? ¡Sí! Ganabet cuenta con las licencias y regulaciones necesarias para operar en México.

¿Ofrece Ganabet una amplia variedad de juegos en línea? ¡Claro! En Ganabet encontrarás una gran selección de juegos, desde tragamonedas hasta juegos de https://casino-ganabet.mx/ mesa.

¿Puedo jugar en Ganabet en mi dispositivo móvil? ¡Absolutamente! Ganabet ofrece una experiencia de juego en línea optimizada para dispositivos móviles en México.

Design and Develop by Ovatheme